#include "messagetimelistitem.h"
#include "ui_messagetimelistitem.h"
#include <QDateTime>
#include <QTimeZone>

messageTimeListItem::messageTimeListItem(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::messageTimeListItem)
{
    ui->setupUi(this);
}

messageTimeListItem::~messageTimeListItem()
{
    delete ui;
}

void messageTimeListItem::setTime(QString strTime)
{
    // 尝试将 strTime 转换为 QDateTime 对象
    // 将秒级时间戳转换为毫秒级时间戳
    quint64 timeInMs = strTime.toULongLong() * 1000;
    QDateTime target = QDateTime::fromMSecsSinceEpoch(timeInMs);

    // 获取本地时区
    QTimeZone localTimeZone = QTimeZone::systemTimeZone();
    // 转换为本地时间
    target = target.toTimeZone(localTimeZone);

    QDateTime now = QDateTime::currentDateTime();
    // 获取今天的开始时间
    QDateTime todayStart = now.date().startOfDay();
    // 获取昨天的开始时间
    QDateTime yesterdayStart = todayStart.addDays(-1);

    QString formattedTime;
    if (target >= todayStart) {
        // 如果是今天，显示小时和分钟
        formattedTime = target.toString("hh:mm");
    } else if (target >= yesterdayStart) {
        // 如果是昨天，显示“昨天”加上小时和分钟
        formattedTime = QString("昨天 %1").arg(target.toString("hh:mm"));
    } else if (target.date().weekNumber() == now.date().weekNumber()) {
        // 如果是本周内（非今天和昨天），显示星期几加上小时和分钟
        QStringList weekDays = {"周日", "周一", "周二", "周三", "周四", "周五", "周六"};
        formattedTime = QString("%1 %2").arg(weekDays[target.date().dayOfWeek() % 7]).arg(target.toString("hh:mm"));
    } else {
        // 如果不是本周，显示年-月-日加上小时和分钟
        formattedTime = target.toString("yyyy-MM-dd hh:mm");
    }

    // 使用 ui->time 显示最终格式化后的时间
    ui->time->setText(formattedTime);
}
